package com.boarsoft.boar.file;

import com.boarsoft.boar.entity.FileVersion;
import com.boarsoft.common.dao.PagedResult;

import java.util.List;

public interface FileVersionBiz {

	/**
	 *
	 * @param id
	 * @return
	 */
	FileVersion get(String id);

	/**
	 *
	 * @param appCode
	 * @param fileName
	 * @param env
	 * @return
	 */
	FileVersion getByFileName(String appCode, String fileName, String env);

	/**
	 *
	 * @param appCode
	 * @param group
	 * @param env
	 * @return
	 */
	List<FileVersion> getByGroup(String appCode, String group, String env);

	/**
	 *
	 * @param a
	 */
	FileVersion add(FileVersion a);

	void update(FileVersion a);

	/**
	 *
	 * @param fileId
	 * @param env
	 * @param key
	 *            以版本号和备注来查询
	 * @param orderBy
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<FileVersion> list(String fileId, String env, String key, String orderBy, int pageNo, int pageSize);

	/**
	 *
	 * @param fileId
	 * @param env
	 * @return
	 */
	List<FileVersion> list(String fileId, String env);

	/**
	 *
	 * @param fileId
	 * @return
	 */
	List<FileVersion> list(String fileId);

	/**
	 * 激活某个版本，并让其它版本失效
	 *
	 * @param id
	 */
	void active(String id);

	/**
	 * 将某个版本的配置文件复制一份，到指定环境下
	 *
	 * @param id
	 * @param env
	 *            目标环境
	 * @return
	 */
	FileVersion copy(String id, String env);

	/**
	 * 查找指定文件的当前激活版本
	 *
	 * @param fileId
	 * @param env
	 * @param group
	 * @return
	 */
	FileVersion find(String fileId, String env, String group);

	/**
	 * 查找指定文件的指定环境、分组、版本
	 *
	 * @param fileId
	 * @param env
	 * @param group
	 * @param ver
	 * @return
	 */
	FileVersion find(String fileId, String env, String group, String ver);

	List<FileVersion> findByEnv(String appId, String env);

	/**
	 * 删除文件版本，及其与应用实例的关系
	 *
	 * @param id
	 *            fileVersionId
	 */
	void delete(String id);

	/**
	 * 保存或更新
	 *
	 * @param o
	 */
	void save(FileVersion o);
}